package com.youmu.shop.common.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {

    public static String getNowDate(String format) {
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        try {
            return formatter.format(new Date());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 获取当前时间戳
     * @return
     */
    public static long getTimestamp(){
	    return System.currentTimeMillis()/1000;
	}
    
    /**
     * 获取半小时之前的日期
     * @return
     */
    public static long getDateBeforeHalfHour(Date param){
	    Calendar c = Calendar.getInstance();
        long diff = c.getTimeInMillis() - param.getTime();
        return diff / (60 * 1000);
	}
    
    /** 
     * 判断时间是否在时间段内 
     *  
     * @param date 
     *            当前时间 yyyy-MM-dd HH:mm:ss 
     * @param strDateBegin 
     *            开始时间 00:00:00 
     * @param strDateEnd 
     *            结束时间 00:05:00 
     * @return 
     */  
    public static boolean isInDate(String strDate, String strDateBegin,  
            String strDateEnd) {  
        // 截取当前时间时分秒  
        int strDateH = Integer.parseInt(strDate.substring(11, 13));  
        int strDateM = Integer.parseInt(strDate.substring(14, 16));  
        int strDateS = Integer.parseInt(strDate.substring(17, 19));  
        // 截取开始时间时分秒  
        int strDateBeginH = Integer.parseInt(strDateBegin.substring(0, 2));  
        int strDateBeginM = Integer.parseInt(strDateBegin.substring(3, 5));  
        int strDateBeginS = Integer.parseInt(strDateBegin.substring(6, 8));  
        // 截取结束时间时分秒  
        int strDateEndH = Integer.parseInt(strDateEnd.substring(0, 2));  
        int strDateEndM = Integer.parseInt(strDateEnd.substring(3, 5));  
        int strDateEndS = Integer.parseInt(strDateEnd.substring(6, 8));  
        if ((strDateH >= strDateBeginH && strDateH <= strDateEndH)) {  
            // 当前时间小时数在开始时间和结束时间小时数之间  
            if (strDateH > strDateBeginH && strDateH < strDateEndH) {  
                return true;  
                // 当前时间小时数等于开始时间小时数，分钟数在开始和结束之间  
            } else if (strDateH == strDateBeginH && strDateM >= strDateBeginM  
                    && strDateM <= strDateEndM) {  
                return true;  
                // 当前时间小时数等于开始时间小时数，分钟数等于开始时间分钟数，秒数在开始和结束之间  
            } else if (strDateH == strDateBeginH && strDateM == strDateBeginM  
                    && strDateS >= strDateBeginS && strDateS <= strDateEndS) {  
                return true;  
            }  
            // 当前时间小时数大等于开始时间小时数，等于结束时间小时数，分钟数小等于结束时间分钟数  
            else if (strDateH >= strDateBeginH && strDateH == strDateEndH  
                    && strDateM <= strDateEndM) {  
                return true;  
                // 当前时间小时数大等于开始时间小时数，等于结束时间小时数，分钟数等于结束时间分钟数，秒数小等于结束时间秒数  
            } else if (strDateH >= strDateBeginH && strDateH == strDateEndH  
                    && strDateM == strDateEndM && strDateS <= strDateEndS) {  
                return true;  
            } else {  
                return false;  
            }  
        } else {  
            return false;  
        }  
    }
    
    /**
     * 比较两个时间字符串大小
     * @return
     */
    public static Boolean compareDateStr(String beginDate, String endDate){
    	return Integer.parseInt(beginDate.replaceAll(":", "")) >= Integer.parseInt(endDate.replaceAll(":", ""));
    }
    
    /**
     * 比较两个时间字符串大小
     * @return
     */
    public static Boolean compareDateStrAndEquals(String beginDate, String endDate){
    	return Integer.parseInt(beginDate.replaceAll(":", "")) > Integer.parseInt(endDate.replaceAll(":", ""));
    }
}
